/**
 * @Desc AES加密工具, 使用方法：必须导入JQuery,然后使用$.方法名(参数...)调用，如$.AESEncrypt('husen')
 * 
 * @Author 何明胜
 * 
 * @Created at 2018年3月17日 下午9:07:35
 * 
 * @Version 1.0.1
 */

var aes_key_default = 'IwL1EObaoKTjhTN8';

/** aes加密,使用默认密钥 */
$.extend({
	'AESEncrypt' : function (dataSource){
	   return $.AESEncryptByKey(dataSource, aes_key_default);
	}
});

/** aes加密,使用自定义密钥 */
$.extend({
	'AESEncryptByKey' : function (dataSource, secretKey){
	    var key = CryptoJS.enc.Utf8.parse(secretKey);
	    var srcs = CryptoJS.enc.Utf8.parse(dataSource);
	    var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
	    return encrypted.toString();
	}
});

/** aes解密,使用默认密钥 */
$.extend({
	'AESDecrypt' : function (dataSource){
	   return $.AESDecryptByKey(dataSource, aes_key_default);
	}
});

/** aes解密,使用自定义密钥 */
$.extend({
	'AESDecryptByKey' : function (dataSource, secretKey){
	    var key = CryptoJS.enc.Utf8.parse(secretKey);
	    var decrypt = CryptoJS.AES.decrypt(dataSource, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
	    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
	}
});

/* ------------------------------ 以下是封装好的方法 --------------------------------- */

!
function(t, n) {
    "object" == typeof exports ? module.exports = exports = n() : "function" == typeof define && define.amd ? define([], n) : t.CryptoJS = n()
} (this,
function() {
    var t = t ||
    function(t, n) {
        var i = Object.create ||
        function() {
            function t() {}
            return function(n) {
                var i;
                return t.prototype = n,
                i = new t,
                t.prototype = null,
                i
            }
        } (),
        e = {},
        r = e.lib = {},
        o = r.Base = function() {
            return {
                extend: function(t) {
                    var n = i(this);
                    return t && n.mixIn(t),
                    n.hasOwnProperty("init") && this.init !== n.init || (n.init = function() {
                        n.$super.init.apply(this, arguments)
                    }),
                    n.init.prototype = n,
                    n.$super = this,
                    n
                },
                create: function() {
                    var t = this.extend();
                    return t.init.apply(t, arguments),
                    t
                },
                init: function() {},
                mixIn: function(t) {
                    for (var n in t) t.hasOwnProperty(n) && (this[n] = t[n]);
                    t.hasOwnProperty("toString") && (this.toString = t.toString)
                },
                clone: function() {
                    return this.init.prototype.extend(this)
                }
            }
        } (),
        s = r.WordArray = o.extend({
            init: function(t, i) {
                t = this.words = t || [],
                i != n ? this.sigBytes = i: this.sigBytes = 4 * t.length
            },
            toString: function(t) {
                return (t || c).stringify(this)
            },
            concat: function(t) {
                var n = this.words,
                i = t.words,
                e = this.sigBytes,
                r = t.sigBytes;
                if (this.clamp(), e % 4) for (var o = 0; o < r; o++) {
                    var s = i[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                    n[e + o >>> 2] |= s << 24 - (e + o) % 4 * 8
                } else for (var o = 0; o < r; o += 4) n[e + o >>> 2] = i[o >>> 2];
                return this.sigBytes += r,
                this
            },
            clamp: function() {
                var n = this.words,
                i = this.sigBytes;
                n[i >>> 2] &= 4294967295 << 32 - i % 4 * 8,
                n.length = t.ceil(i / 4)
            },
            clone: function() {
                var t = o.clone.call(this);
                return t.words = this.words.slice(0),
                t
            },
            random: function(n) {
                for (var i, e = [], r = function(n) {
                    var n = n,
                    i = 987654321,
                    e = 4294967295;
                    return function() {
                        i = 36969 * (65535 & i) + (i >> 16) & e,
                        n = 18e3 * (65535 & n) + (n >> 16) & e;
                        var r = (i << 16) + n & e;
                        return r /= 4294967296,
                        r += .5,
                        r * (t.random() > .5 ? 1 : -1)
                    }
                },
                o = 0; o < n; o += 4) {
                    var a = r(4294967296 * (i || t.random()));
                    i = 987654071 * a(),
                    e.push(4294967296 * a() | 0)
                }
                return new s.init(e, n)
            }
        }),
        a = e.enc = {},
        c = a.Hex = {
            stringify: function(t) {
                for (var n = t.words,
                i = t.sigBytes,
                e = [], r = 0; r < i; r++) {
                    var o = n[r >>> 2] >>> 24 - r % 4 * 8 & 255;
                    e.push((o >>> 4).toString(16)),
                    e.push((15 & o).toString(16))
                }
                return e.join("")
            },
            parse: function(t) {
                for (var n = t.length,
                i = [], e = 0; e < n; e += 2) i[e >>> 3] |= parseInt(t.substr(e, 2), 16) << 24 - e % 8 * 4;
                return new s.init(i, n / 2)
            }
        },
        u = a.Latin1 = {
            stringify: function(t) {
                for (var n = t.words,
                i = t.sigBytes,
                e = [], r = 0; r < i; r++) {
                    var o = n[r >>> 2] >>> 24 - r % 4 * 8 & 255;
                    e.push(String.fromCharCode(o))
                }
                return e.join("")
            },
            parse: function(t) {
                for (var n = t.length,
                i = [], e = 0; e < n; e++) i[e >>> 2] |= (255 & t.charCodeAt(e)) << 24 - e % 4 * 8;
                return new s.init(i, n)
            }
        },
        f = a.Utf8 = {
            stringify: function(t) {
                try {
                    return decodeURIComponent(escape(u.stringify(t)))
                } catch(t) {
                    throw new Error("Malformed UTF-8 data")
                }
            },
            parse: function(t) {
                return u.parse(unescape(encodeURIComponent(t)))
            }
        },
        h = r.BufferedBlockAlgorithm = o.extend({
            reset: function() {
                this._data = new s.init,
                this._nDataBytes = 0
            },
            _append: function(t) {
                "string" == typeof t && (t = f.parse(t)),
                this._data.concat(t),
                this._nDataBytes += t.sigBytes
            },
            _process: function(n) {
                var i = this._data,
                e = i.words,
                r = i.sigBytes,
                o = this.blockSize,
                a = 4 * o,
                c = r / a;
                c = n ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0);
                var u = c * o,
                f = t.min(4 * u, r);
                if (u) {
                    for (var h = 0; h < u; h += o) this._doProcessBlock(e, h);
                    var p = e.splice(0, u);
                    i.sigBytes -= f
                }
                return new s.init(p, f)
            },
            clone: function() {
                var t = o.clone.call(this);
                return t._data = this._data.clone(),
                t
            },
            _minBufferSize: 0
        }),
        p = (r.Hasher = h.extend({
            cfg: o.extend(),
            init: function(t) {
                this.cfg = this.cfg.extend(t),
                this.reset()
            },
            reset: function() {
                h.reset.call(this),
                this._doReset()
            },
            update: function(t) {
                return this._append(t),
                this._process(),
                this
            },
            finalize: function(t) {
                t && this._append(t);
                var n = this._doFinalize();
                return n
            },
            blockSize: 16,
            _createHelper: function(t) {
                return function(n, i) {
                    return new t.init(i).finalize(n)
                }
            },
            _createHmacHelper: function(t) {
                return function(n, i) {
                    return new p.HMAC.init(t, i).finalize(n)
                }
            }
        }), e.algo = {});
        return e
    } (Math);
    return t
}); !
function(e, t, i) {
    "object" == typeof exports ? module.exports = exports = t(require("./core.min"), require("./sha1.min"), require("./hmac.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./sha1.min", "./hmac.min"], t) : t(e.CryptoJS)
} (this,
function(e) {
    return function() {
        var t = e,
        i = t.lib,
        r = i.Base,
        n = i.WordArray,
        o = t.algo,
        a = o.MD5,
        c = o.EvpKDF = r.extend({
            cfg: r.extend({
                keySize: 4,
                hasher: a,
                iterations: 1
            }),
            init: function(e) {
                this.cfg = this.cfg.extend(e)
            },
            compute: function(e, t) {
                for (var i = this.cfg,
                r = i.hasher.create(), o = n.create(), a = o.words, c = i.keySize, f = i.iterations; a.length < c;) {
                    s && r.update(s);
                    var s = r.update(e).finalize(t);
                    r.reset();
                    for (var u = 1; u < f; u++) s = r.finalize(s),
                    r.reset();
                    o.concat(s)
                }
                return o.sigBytes = 4 * c,
                o
            }
        });
        t.EvpKDF = function(e, t, i) {
            return c.create(i).compute(e, t)
        }
    } (),
    e.EvpKDF
}); !
function(r, e) {
    "object" == typeof exports ? module.exports = exports = e(require("./core.min")) : "function" == typeof define && define.amd ? define(["./core.min"], e) : e(r.CryptoJS)
} (this,
function(r) {
    return function() {
        function e(r, e, t) {
            for (var n = [], i = 0, o = 0; o < e; o++) if (o % 4) {
                var f = t[r.charCodeAt(o - 1)] << o % 4 * 2,
                c = t[r.charCodeAt(o)] >>> 6 - o % 4 * 2;
                n[i >>> 2] |= (f | c) << 24 - i % 4 * 8,
                i++
            }
            return a.create(n, i)
        }
        var t = r,
        n = t.lib,
        a = n.WordArray,
        i = t.enc;
        i.Base64 = {
            stringify: function(r) {
                var e = r.words,
                t = r.sigBytes,
                n = this._map;
                r.clamp();
                for (var a = [], i = 0; i < t; i += 3) for (var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255, f = e[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255, c = e[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, s = o << 16 | f << 8 | c, h = 0; h < 4 && i + .75 * h < t; h++) a.push(n.charAt(s >>> 6 * (3 - h) & 63));
                var p = n.charAt(64);
                if (p) for (; a.length % 4;) a.push(p);
                return a.join("")
            },
            parse: function(r) {
                var t = r.length,
                n = this._map,
                a = this._reverseMap;
                if (!a) {
                    a = this._reverseMap = [];
                    for (var i = 0; i < n.length; i++) a[n.charCodeAt(i)] = i
                }
                var o = n.charAt(64);
                if (o) {
                    var f = r.indexOf(o);
                    f !== -1 && (t = f)
                }
                return e(r, t, a)
            },
            _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
        }
    } (),
    r.enc.Base64
}); !
function(e, t, r) {
    "object" == typeof exports ? module.exports = exports = t(require("./core.min"), require("./evpkdf.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./evpkdf.min"], t) : t(e.CryptoJS)
} (this,
function(e) {
    e.lib.Cipher ||
    function(t) {
        var r = e,
        i = r.lib,
        n = i.Base,
        c = i.WordArray,
        o = i.BufferedBlockAlgorithm,
        s = r.enc,
        a = (s.Utf8, s.Base64),
        f = r.algo,
        p = f.EvpKDF,
        d = i.Cipher = o.extend({
            cfg: n.extend(),
            createEncryptor: function(e, t) {
                return this.create(this._ENC_XFORM_MODE, e, t)
            },
            createDecryptor: function(e, t) {
                return this.create(this._DEC_XFORM_MODE, e, t)
            },
            init: function(e, t, r) {
                this.cfg = this.cfg.extend(r),
                this._xformMode = e,
                this._key = t,
                this.reset()
            },
            reset: function() {
                o.reset.call(this),
                this._doReset()
            },
            process: function(e) {
                return this._append(e),
                this._process()
            },
            finalize: function(e) {
                e && this._append(e);
                var t = this._doFinalize();
                return t
            },
            keySize: 4,
            ivSize: 4,
            _ENC_XFORM_MODE: 1,
            _DEC_XFORM_MODE: 2,
            _createHelper: function() {
                function e(e) {
                    return "string" == typeof e ? B: x
                }
                return function(t) {
                    return {
                        encrypt: function(r, i, n) {
                            return e(i).encrypt(t, r, i, n)
                        },
                        decrypt: function(r, i, n) {
                            return e(i).decrypt(t, r, i, n)
                        }
                    }
                }
            } ()
        }),
        h = (i.StreamCipher = d.extend({
            _doFinalize: function() {
                var e = this._process(!0);
                return e
            },
            blockSize: 1
        }), r.mode = {}),
        u = i.BlockCipherMode = n.extend({
            createEncryptor: function(e, t) {
                return this.Encryptor.create(e, t)
            },
            createDecryptor: function(e, t) {
                return this.Decryptor.create(e, t)
            },
            init: function(e, t) {
                this._cipher = e,
                this._iv = t
            }
        }),
        l = h.CBC = function() {
            function e(e, r, i) {
                var n = this._iv;
                if (n) {
                    var c = n;
                    this._iv = t
                } else var c = this._prevBlock;
                for (var o = 0; o < i; o++) e[r + o] ^= c[o]
            }
            var r = u.extend();
            return r.Encryptor = r.extend({
                processBlock: function(t, r) {
                    var i = this._cipher,
                    n = i.blockSize;
                    e.call(this, t, r, n),
                    i.encryptBlock(t, r),
                    this._prevBlock = t.slice(r, r + n)
                }
            }),
            r.Decryptor = r.extend({
                processBlock: function(t, r) {
                    var i = this._cipher,
                    n = i.blockSize,
                    c = t.slice(r, r + n);
                    i.decryptBlock(t, r),
                    e.call(this, t, r, n),
                    this._prevBlock = c
                }
            }),
            r
        } (),
        _ = r.pad = {},
        v = _.Pkcs7 = {
            pad: function(e, t) {
                for (var r = 4 * t,
                i = r - e.sigBytes % r,
                n = i << 24 | i << 16 | i << 8 | i,
                o = [], s = 0; s < i; s += 4) o.push(n);
                var a = c.create(o, i);
                e.concat(a)
            },
            unpad: function(e) {
                var t = 255 & e.words[e.sigBytes - 1 >>> 2];
                e.sigBytes -= t
            }
        },
        y = (i.BlockCipher = d.extend({
            cfg: d.cfg.extend({
                mode: l,
                padding: v
            }),
            reset: function() {
                d.reset.call(this);
                var e = this.cfg,
                t = e.iv,
                r = e.mode;
                if (this._xformMode == this._ENC_XFORM_MODE) var i = r.createEncryptor;
                else {
                    var i = r.createDecryptor;
                    this._minBufferSize = 1
                }
                this._mode && this._mode.__creator == i ? this._mode.init(this, t && t.words) : (this._mode = i.call(r, this, t && t.words), this._mode.__creator = i)
            },
            _doProcessBlock: function(e, t) {
                this._mode.processBlock(e, t)
            },
            _doFinalize: function() {
                var e = this.cfg.padding;
                if (this._xformMode == this._ENC_XFORM_MODE) {
                    e.pad(this._data, this.blockSize);
                    var t = this._process(!0)
                } else {
                    var t = this._process(!0);
                    e.unpad(t)
                }
                return t
            },
            blockSize: 4
        }), i.CipherParams = n.extend({
            init: function(e) {
                this.mixIn(e)
            },
            toString: function(e) {
                return (e || this.formatter).stringify(this)
            }
        })),
        m = r.format = {},
        k = m.OpenSSL = {
            stringify: function(e) {
                var t = e.ciphertext,
                r = e.salt;
                if (r) var i = c.create([1398893684, 1701076831]).concat(r).concat(t);
                else var i = t;
                return i.toString(a)
            },
            parse: function(e) {
                var t = a.parse(e),
                r = t.words;
                if (1398893684 == r[0] && 1701076831 == r[1]) {
                    var i = c.create(r.slice(2, 4));
                    r.splice(0, 4),
                    t.sigBytes -= 16
                }
                return y.create({
                    ciphertext: t,
                    salt: i
                })
            }
        },
        x = i.SerializableCipher = n.extend({
            cfg: n.extend({
                format: k
            }),
            encrypt: function(e, t, r, i) {
                i = this.cfg.extend(i);
                var n = e.createEncryptor(r, i),
                c = n.finalize(t),
                o = n.cfg;
                return y.create({
                    ciphertext: c,
                    key: r,
                    iv: o.iv,
                    algorithm: e,
                    mode: o.mode,
                    padding: o.padding,
                    blockSize: e.blockSize,
                    formatter: i.format
                })
            },
            decrypt: function(e, t, r, i) {
                i = this.cfg.extend(i),
                t = this._parse(t, i.format);
                var n = e.createDecryptor(r, i).finalize(t.ciphertext);
                return n
            },
            _parse: function(e, t) {
                return "string" == typeof e ? t.parse(e, this) : e
            }
        }),
        g = r.kdf = {},
        S = g.OpenSSL = {
            execute: function(e, t, r, i) {
                i || (i = c.random(8));
                var n = p.create({
                    keySize: t + r
                }).compute(e, i),
                o = c.create(n.words.slice(t), 4 * r);
                return n.sigBytes = 4 * t,
                y.create({
                    key: n,
                    iv: o,
                    salt: i
                })
            }
        },
        B = i.PasswordBasedCipher = x.extend({
            cfg: x.cfg.extend({
                kdf: S
            }),
            encrypt: function(e, t, r, i) {
                i = this.cfg.extend(i);
                var n = i.kdf.execute(r, e.keySize, e.ivSize);
                i.iv = n.iv;
                var c = x.encrypt.call(this, e, t, n.key, i);
                return c.mixIn(n),
                c
            },
            decrypt: function(e, t, r, i) {
                i = this.cfg.extend(i),
                t = this._parse(t, i.format);
                var n = i.kdf.execute(r, e.keySize, e.ivSize, t.salt);
                i.iv = n.iv;
                var c = x.decrypt.call(this, e, t, n.key, i);
                return c
            }
        })
    } ()
}); !
function(e, i) {
    "object" == typeof exports ? module.exports = exports = i(require("./core.min")) : "function" == typeof define && define.amd ? define(["./core.min"], i) : i(e.CryptoJS)
} (this,
function(e) { !
    function() {
        var i = e,
        t = i.lib,
        n = t.Base,
        s = i.enc,
        r = s.Utf8,
        o = i.algo;
        o.HMAC = n.extend({
            init: function(e, i) {
                e = this._hasher = new e.init,
                "string" == typeof i && (i = r.parse(i));
                var t = e.blockSize,
                n = 4 * t;
                i.sigBytes > n && (i = e.finalize(i)),
                i.clamp();
                for (var s = this._oKey = i.clone(), o = this._iKey = i.clone(), a = s.words, f = o.words, c = 0; c < t; c++) a[c] ^= 1549556828,
                f[c] ^= 909522486;
                s.sigBytes = o.sigBytes = n,
                this.reset()
            },
            reset: function() {
                var e = this._hasher;
                e.reset(),
                e.update(this._iKey)
            },
            update: function(e) {
                return this._hasher.update(e),
                this
            },
            finalize: function(e) {
                var i = this._hasher,
                t = i.finalize(e);
                i.reset();
                var n = i.finalize(this._oKey.clone().concat(t));
                return n
            }
        })
    } ()
}); !
function(e, o, r) {
    "object" == typeof exports ? module.exports = exports = o(require("./core.min"), require("./cipher-core.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./cipher-core.min"], o) : o(e.CryptoJS)
} (this,
function(e) {
    return e.mode.ECB = function() {
        var o = e.lib.BlockCipherMode.extend();
        return o.Encryptor = o.extend({
            processBlock: function(e, o) {
                this._cipher.encryptBlock(e, o)
            }
        }),
        o.Decryptor = o.extend({
            processBlock: function(e, o) {
                this._cipher.decryptBlock(e, o)
            }
        }),
        o
    } (),
    e.mode.ECB
}); !
function(e, r, i) {
    "object" == typeof exports ? module.exports = exports = r(require("./core.min"), require("./cipher-core.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./cipher-core.min"], r) : r(e.CryptoJS)
} (this,
function(e) {
    return e.pad.Pkcs7
}); !
function(e, r, i) {
    "object" == typeof exports ? module.exports = exports = r(require("./core.min"), require("./enc-base64.min"), require("./md5.min"), require("./evpkdf.min"), require("./cipher-core.min")) : "function" == typeof define && define.amd ? define(["./core.min", "./enc-base64.min", "./md5.min", "./evpkdf.min", "./cipher-core.min"], r) : r(e.CryptoJS)
} (this,
function(e) {
    return function() {
        var r = e,
        i = r.lib,
        n = i.BlockCipher,
        o = r.algo,
        t = [],
        c = [],
        s = [],
        f = [],
        a = [],
        d = [],
        u = [],
        v = [],
        h = [],
        y = []; !
        function() {
            for (var e = [], r = 0; r < 256; r++) r < 128 ? e[r] = r << 1 : e[r] = r << 1 ^ 283;
            for (var i = 0,
            n = 0,
            r = 0; r < 256; r++) {
                var o = n ^ n << 1 ^ n << 2 ^ n << 3 ^ n << 4;
                o = o >>> 8 ^ 255 & o ^ 99,
                t[i] = o,
                c[o] = i;
                var p = e[i],
                l = e[p],
                _ = e[l],
                k = 257 * e[o] ^ 16843008 * o;
                s[i] = k << 24 | k >>> 8,
                f[i] = k << 16 | k >>> 16,
                a[i] = k << 8 | k >>> 24,
                d[i] = k;
                var k = 16843009 * _ ^ 65537 * l ^ 257 * p ^ 16843008 * i;
                u[o] = k << 24 | k >>> 8,
                v[o] = k << 16 | k >>> 16,
                h[o] = k << 8 | k >>> 24,
                y[o] = k,
                i ? (i = p ^ e[e[e[_ ^ p]]], n ^= e[e[n]]) : i = n = 1
            }
        } ();
        var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
        l = o.AES = n.extend({
            _doReset: function() {
                if (!this._nRounds || this._keyPriorReset !== this._key) {
                    for (var e = this._keyPriorReset = this._key,
                    r = e.words,
                    i = e.sigBytes / 4,
                    n = this._nRounds = i + 6,
                    o = 4 * (n + 1), c = this._keySchedule = [], s = 0; s < o; s++) if (s < i) c[s] = r[s];
                    else {
                        var f = c[s - 1];
                        s % i ? i > 6 && s % i == 4 && (f = t[f >>> 24] << 24 | t[f >>> 16 & 255] << 16 | t[f >>> 8 & 255] << 8 | t[255 & f]) : (f = f << 8 | f >>> 24, f = t[f >>> 24] << 24 | t[f >>> 16 & 255] << 16 | t[f >>> 8 & 255] << 8 | t[255 & f], f ^= p[s / i | 0] << 24),
                        c[s] = c[s - i] ^ f
                    }
                    for (var a = this._invKeySchedule = [], d = 0; d < o; d++) {
                        var s = o - d;
                        if (d % 4) var f = c[s];
                        else var f = c[s - 4];
                        d < 4 || s <= 4 ? a[d] = f: a[d] = u[t[f >>> 24]] ^ v[t[f >>> 16 & 255]] ^ h[t[f >>> 8 & 255]] ^ y[t[255 & f]]
                    }
                }
            },
            encryptBlock: function(e, r) {
                this._doCryptBlock(e, r, this._keySchedule, s, f, a, d, t)
            },
            decryptBlock: function(e, r) {
                var i = e[r + 1];
                e[r + 1] = e[r + 3],
                e[r + 3] = i,
                this._doCryptBlock(e, r, this._invKeySchedule, u, v, h, y, c);
                var i = e[r + 1];
                e[r + 1] = e[r + 3],
                e[r + 3] = i
            },
            _doCryptBlock: function(e, r, i, n, o, t, c, s) {
                for (var f = this._nRounds,
                a = e[r] ^ i[0], d = e[r + 1] ^ i[1], u = e[r + 2] ^ i[2], v = e[r + 3] ^ i[3], h = 4, y = 1; y < f; y++) {
                    var p = n[a >>> 24] ^ o[d >>> 16 & 255] ^ t[u >>> 8 & 255] ^ c[255 & v] ^ i[h++],
                    l = n[d >>> 24] ^ o[u >>> 16 & 255] ^ t[v >>> 8 & 255] ^ c[255 & a] ^ i[h++],
                    _ = n[u >>> 24] ^ o[v >>> 16 & 255] ^ t[a >>> 8 & 255] ^ c[255 & d] ^ i[h++],
                    k = n[v >>> 24] ^ o[a >>> 16 & 255] ^ t[d >>> 8 & 255] ^ c[255 & u] ^ i[h++];
                    a = p,
                    d = l,
                    u = _,
                    v = k
                }
                var p = (s[a >>> 24] << 24 | s[d >>> 16 & 255] << 16 | s[u >>> 8 & 255] << 8 | s[255 & v]) ^ i[h++],
                l = (s[d >>> 24] << 24 | s[u >>> 16 & 255] << 16 | s[v >>> 8 & 255] << 8 | s[255 & a]) ^ i[h++],
                _ = (s[u >>> 24] << 24 | s[v >>> 16 & 255] << 16 | s[a >>> 8 & 255] << 8 | s[255 & d]) ^ i[h++],
                k = (s[v >>> 24] << 24 | s[a >>> 16 & 255] << 16 | s[d >>> 8 & 255] << 8 | s[255 & u]) ^ i[h++];
                e[r] = p,
                e[r + 1] = l,
                e[r + 2] = _,
                e[r + 3] = k
            },
            keySize: 8
        });
        r.AES = n._createHelper(l)
    } (),
    e.AES
}); !
function(e, n) {
    "object" == typeof exports ? module.exports = exports = n(require("./core.min")) : "function" == typeof define && define.amd ? define(["./core.min"], n) : n(e.CryptoJS)
} (this,
function(e) {
    return e.enc.Utf8
});